/**
 * Tipos del compilador
 * @author paco
 */
public class Tipo
{
	public static final Integer
			ENTERO = 0,
			REAL = 1,
			BOOLEANO = 2,
			CLASE = 3,
			FUNCION = 4,
			ARRAY = 5;
	/**
	 * Nombre del tipo.
	 */
	private String nombre;
	/**
	 * Tipo al que apunta.
	 */
	private Tipo tipoBase;

	public Tipo(String nombre, Tipo tipoBase)
	{
		this.nombre = nombre;
		this.tipoBase = tipoBase;
	}

	public String getNombre()
	{
		return nombre;
	}

	public void setNombre(String nombre)
	{
		this.nombre = nombre;
	}

	public Tipo getTipoBase()
	{
		return tipoBase;
	}
	
	public Tipo getTipoSimple()
	{
		return null;
	}

	public void setTipoBase(Tipo tipoBase)
	{
		this.tipoBase = tipoBase;
	}
	
	public boolean isEntero()
	{
		return ( this instanceof TipoEntero );
	}
	
	public boolean isBoolean()
	{
		return ( this instanceof TipoBooleano );
	}
	
	public boolean isReal()
	{
		return ( this instanceof TipoReal );
	}
	
	public boolean isArray()
	{
		return ( this instanceof TipoArray );
	}
	
	@Override
	public String toString()
	{
		StringBuilder sb = new StringBuilder();
		
		return sb.toString();
	}
	
	public String toWrite()
	{
		return "";
	}
	
}
